#ifndef PROTOCOLO_H_
#define PROTOCOLO_H_

#include <string>
#include "DTO.h"

/*
 * @class Protocolo
 *
 * @brief Clase Abstracta.Base para todos los posibles protocolos
 *
 */
class Protocolo
{

public:
	/**
	* Constructor
	*/
	Protocolo();

	//metodos comunes a todos los protocolos
	/**
	 * Dado un dto serializarlo utilizando el protocolo
	 */
	virtual std::string serializar(DTO* dto) = 0;

	/**
	 * Dado un string deserialiarlo utilizando el protocolo
	 */
	virtual DTO* deserializar(std::string& stream) = 0;

	virtual ~Protocolo(){};
};

#endif /* PROTOCOLO_H_ */
